[强化学习]强化学习基本概念

https://www.youtube.com/watch?v=vmkRMvhCW5c&list=PLvOO0btloRnsiqM72G4Uid0UWljikENlU

Station And Action

强化学习的主体被称为智能体(agent) 。由谁做动作或决策,谁就是智能体。比如在超级玛丽游戏中,玛丽奥就是智能体。 环境(environment) 是与智能体交互的对象,例如游戏程序就是环境。在每个时刻,环境有一个 状态 (state) ,可以理解为对当前时刻环境的概括。例如当前的游戏画面。而马里奥根据当前游戏画面所做的判断就被称为 动作(Action)
策略(Policy) 记为π,策略函数π:(a|s)指的是在状态s的情况下做出动作a的概率。Agent做出一个动作后会得到一个 奖励(Reward) R。并且会得到一个新的状态s+1,这个过程被称为状态转移。状态转移可以是随机的也可以是确定的,一般是随机的。我们用 状态转移概率函数(state transition probability function) 来描述状态转移,记为

pt(ss,a)=P(St+1=sSt=s,At=a)

状态空间(Station Spae) 是指所有可能存在状态的集合。

环境与智能体的交互过程

RL中随机性的来源有 动作随机性状态转移随机性

过程:
Observe a frame(state s1)
->make Action a1
->observe a new frame(state s2)
->make Action a2

(state,action,reward)trajectory:
s1,a1,r1,…,sT,aT,rT

Reward And Retuen

Return:把t时刻以及后面的奖励全部加起来,就得到了Return

由于t时刻的动作对后面的影响越来越小,所以后面的奖励会乘上一个 折扣率(discounted) $\gamma $

Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+

Value Function

动作价值函数$Q_π(s,a)$,最优动作函数$Q_*(s,a)$,状态价值函数$V_π(s)$都是汇报的期望。

动作价值函数

简单的说,动作价值函数就是在状态s的情况下做出动作a的预估回报,依赖于当前的状态s,动作a以及策略函数π。

当消除了策略函数π的影响,即选择最优策略的时候,就成了最优动作价值函数$Q_*(s,a)$

Q(st,at)=maxπQπ(st,at),stS,atA.

状态价值函数

状态价值函数则是用来评估当前状态的好坏。举个例子:
假设 AI 用策略函数 π 下围棋。AI 想知道当前状态 st(即棋盘上的格局)是否对自 己有利,以及自己和对手的胜算各有多大。该用什么来量化双方的胜算呢?答案是状态 价值函数(state-value function):

Vπ(st)=EAtπ(st)[Qπ(st,At)]=aAπ(ast)Qπ(st,a)

简单的说,状态价值函数消除了动作对状态的影响,只依赖于策略π和当前的状态s。


强化学习的类型

不理解环境(Model-Free RL)

智能体只能一步一步的参与行动并等待反馈,然后再根据反馈参与参与下一次的行动。

理解环境(Model-Base Rl)

智能体能通过想象与判断接下来要发生的情况,并根据想象选择接下来发生情况最好的。

基于概率(Policy-Base RL)

通过分析当前所处的环境,输出采取各种下一步行动的概率,并随机选择其中一个,也就是说所有的行动都有可能被选到,只是可能性不同。常使用的方法有Policy Gradient。

基于价值(Value_Base RL)

智能体选择价值最高的行动。但对于基于连续的动作不能使用这种方法。常用的方法有Q- Learning,Sarsa。

Actor- Critic

结合基于概率和基于价值的方法。Actor会基于概率做出动作,Critic会基于价值对做出的动作给出价值。加速了学习过程。

回合更新

每一轮结束后再进行参数的更新。

单步更新

在有学习进行的每一步都在更新。

Actor- Critic

Actor会基于概率做出动作,Critic会基于价值对做出的动作给出价值。

策略网络 π(a|s; θ) 相当于演员,它基于状态s做出动作a。价值网络 q(s, a; w) 相当于评委,它给演员的表现打分,评价在状态s的情况下做出动作a的好坏程度。

为什么不直接把奖励R反馈给策略网络(演员),而要用价值网络(评委)这样一个中介呢?

  • 策略学习的目标函数J(θ)是回报U的期望,而不是奖励R的期望;注意回报U和奖励R的区别。虽然能观测到当前的奖励R,但是它对策略网络是毫无意义的;训练策略网络(演员)需要的是回报U,而不是奖励R。价值网络(评委)能够估算出回报U的期望,因此能帮助训练策略网络(演员)。

训练过程:设当前策略网络参数是$θ_{now}$,价值网络参数是$w_{now}$。执行下面的步骤,将参数更新成$θ_{new}$和$w_{new}$

  • 观测到当前状态$s_t$,根据策略网络做决策:$a_t∼π(·|s_t;θ_{now})$,并让智能体执行动$a_t$。
  • 根据策略网络做决策:$ \tilde{a_{t+1}} ∼π(·| s_{t+1} ; θ_{now})$ , 但不让智能体执行动作$\tilde{a}_{t+1}$。
  • 让价值网络打分:q^t=q(st,at;wnow ) 和 q^t+1=q(st+1,a~t+1;wnow )
  • 计算 TD 目标和 TD 误差:y^t=rt+γq^t+1 和 δt=q^ty^t 
  • 更新价值网络:wnew wnow αδtwq(st,at;wnow ). 
  • 更新策略网络:θnew θnow +βq^tθlnπ(atst;θnow )

更新价值网络q

  • 计算$q(s_t,a_t;w_t)$和$(s_{t+1},a_{t+1};w_t)$
  • TD target:$y_t=r_t+\gamma * \max_a $($s_{t+1}$,a_{t+1};$w$)
  • Loss:$L(w) = \frac{1}{2}[q(s_t,a_t;w_t) - y_t]^2$
  • Gradient descet:$w_{t+1} = w_t - \alpha * \frac{\partial L(w)}{\partial w} |_{w=w_t}$

使用策略梯度算法更新策略网络π

  • 让 $\mathbf{g}(a, \boldsymbol{\theta})=\frac{\partial \log \pi(a \mid s, \boldsymbol{\theta})}{\partial \boldsymbol{\theta}} \cdot q\left(s_{t}, a ; \mathbf{w}\right)$
  • $\frac{\partial V(s;θ,w_t)}{\partial θ}=\mathbb{E}_{A}[\mathbf{g}(A, \boldsymbol{\theta})] $
  • 随机抽样一个a根据π(·|$s_t$;θ)。
  • 更新梯度:$θ_{t+1} = θ_t + \beta * g(a,θ_t)$